home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / GAS_1_38.ARJ / NSKOPCOD.H < prev    next >
C/C++ Source or Header  |  1990-07-20  |  24KB  |  435 lines

  1. /* ns32k-opcode.h -- Opcode table for National Semi 32k processor
  2.    Copyright (C) 1987 Free Software Foundation, Inc.
  3.  
  4. This file is part of GAS, the GNU Assembler.
  5.  
  6. GAS is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 1, or (at your option)
  9. any later version.
  10.  
  11. GAS is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with GAS; see the file COPYING.  If not, write to
  18. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19.  
  20.  
  21. #ifdef SEQUENT_COMPATABILITY
  22. #define DEF_MODEC 20
  23. #define DEF_MODEL 21
  24. #endif
  25.  
  26. #ifndef DEF_MODEC
  27. #define DEF_MODEC 20
  28. #endif
  29.  
  30. #ifndef DEF_MODEL
  31. #define DEF_MODEL 20
  32. #endif
  33. /*
  34.    After deciding the instruction entry (via hash.c) the instruction parser
  35.    will try to match the operands after the instruction to the required set
  36.    given in the entry operandfield. Every operand will result in a change in
  37.    the opcode or the addition of data to the opcode.
  38.    The operands in the source instruction are checked for inconsistent
  39.    semantics.
  40.  
  41.     F : 32 bit float    general form
  42.     L : 64 bit float        "
  43.     B : byte            "
  44.     W : word            "
  45.     D : double-word            "
  46.     Q : quad-word            "
  47.     A : double-word        gen-address-form ie no regs allowed
  48.     d : displacement
  49.     b : displacement - pc relative addressing  acb
  50.     p : displacement - pc relative addressing  br bcond bsr cxp
  51.     q : quick
  52.     i : immediate (8 bits)
  53.         This is not a standard ns32k operandtype, it is used to build
  54.         instructions like    svc arg1,arg2
  55.         Svc is the instruction SuperVisorCall and is sometimes used to
  56.         call OS-routines from usermode. Some args might be handy!
  57.     r : register number (3 bits)
  58.     O : setcfg instruction optionslist
  59.     C : cinv instruction optionslist
  60.     S : stringinstruction optionslist
  61.     U : registerlist    save,enter
  62.     u : registerlist    restore,exit
  63.     M : mmu register
  64.     P : cpu register
  65.     g : 3:rd operand of inss or exts instruction
  66.     G : 4:th operand of inss or exts instruction
  67.         Those operands are encoded in the same byte.
  68.         This byte is placed last in the instruction.
  69.     f : operand of sfsr
  70.     H : sequent-hack for bsr (Warning)
  71.  
  72. column    1     instructions
  73.     2     number of bits in opcode.
  74.     3     number of bits in opcode explicitly
  75.         determined by the instruction type.
  76.     4     opcodeseed, the number we build our opcode
  77.         from.
  78.     5     operandtypes, used by operandparser.
  79.     6     size in bytes of immediate
  80. */
  81. struct ns32k_opcode {
  82.   char *name;
  83.   unsigned char opcode_id_size; /* not used by the assembler */
  84.   unsigned char opcode_size;
  85.   unsigned long opcode_seed;
  86.   char *operands;
  87.   unsigned char im_size;    /* not used by dissassembler */
  88.   char *default_args;        /* default to those args when none given */
  89.   char default_modec;        /* default to this addr-mode when ambigous
  90.                    ie when the argument of a general addr-mode
  91.                    is a plain constant */
  92.   char default_model;        /* is a plain label */
  93. };
  94.  
  95. struct ns32k_opcode ns32k_opcodes[]=
  96. {
  97.   { "absf",    14,24,    0x35be,    "1F2F",        4,    "",    DEF_MODEC,DEF_MODEL    },
  98.   { "absl",    14,24,    0x34be,    "1L2L",        8,    "",    DEF_MODEC,DEF_MODEL    },
  99.   { "absb",    14,24,    0x304e, "1B2B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  100.   { "absw",    14,24,    0x314e, "1W2W",        2,    "",    DEF_MODEC,DEF_MODEL    },
  101.   { "absd",    14,24,    0x334e, "1D2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  102.   { "acbb",     7,16,    0x4c,    "2B1q3p",    1,    "",    DEF_MODEC,DEF_MODEL    },
  103.   { "acbw",     7,16,    0x4d,    "2W1q3p",    2,    "",    DEF_MODEC,DEF_MODEL    },
  104.   { "acbd",     7,16,    0x4f,    "2D1q3p",    4,    "",    DEF_MODEC,DEF_MODEL    },
  105.   { "addf",    14,24,    0x01be,    "1F2F",        4,    "",    DEF_MODEC,DEF_MODEL    },
  106.   { "addl",    14,24,    0x00be, "1L2L",        8,    "",    DEF_MODEC,DEF_MODEL    },
  107.   { "addb",     6,16,    0x00,    "1B2B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  108.   { "addw",     6,16,    0x01,    "1W2W",        2,    "",    DEF_MODEC,DEF_MODEL    },
  109.   { "addd",     6,16,    0x03,    "1D2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  110.   { "addcb",     6,16,    0x10,    "1B2B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  111.   { "addcw",     6,16,    0x11,    "1W2W",        2,    "",    DEF_MODEC,DEF_MODEL    },
  112.   { "addcd",     6,16,    0x13,    "1D2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  113.   { "addpb",    14,24,    0x3c4e,    "1B2B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  114.   { "addpw",    14,24,    0x3d4e,    "1W2W",        2,    "",    DEF_MODEC,DEF_MODEL    },
  115.   { "addpd",    14,24,    0x3f4e,    "1D2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  116.   { "addqb",     7,16,    0x0c,    "2B1q",        1,    "",    DEF_MODEC,DEF_MODEL    },
  117.   { "addqw",     7,16,    0x0d,    "2W1q",        2,    "",    DEF_MODEC,DEF_MODEL    },
  118.   { "addqd",     7,16,    0x0f,    "2D1q",        4,    "",    DEF_MODEC,DEF_MODEL    },
  119.   { "addr",     6,16,    0x27,    "1A2D",        4,    "",    21,21    },
  120.   { "adjspb",    11,16,    0x057c,    "1B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  121.   { "adjspw",    11,16,    0x057d,    "1W",         2,    "",    DEF_MODEC,DEF_MODEL    },
  122.   { "adjspd",    11,16,    0x057f,    "1D",         4,    "",    DEF_MODEC,DEF_MODEL    },
  123.   { "andb",     6,16,    0x28,    "1B2B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  124.   { "andw",     6,16,    0x29,    "1W2W",        2,    "",    DEF_MODEC,DEF_MODEL    },
  125.   { "andd",     6,16,    0x2b,    "1D2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  126.   { "ashb",    14,24,    0x044e,    "1B2B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  127.   { "ashw",    14,24,    0x054e,    "1B2W",        1,    "",    DEF_MODEC,DEF_MODEL    },
  128.   { "ashd",    14,24,    0x074e,    "1B2D",        1,    "",    DEF_MODEC,DEF_MODEL    },
  129.   { "beq",     8,8,    0x0a,    "1p",        0,    "",    21,21    },
  130.   { "bne",     8,8,    0x1a,    "1p",        0,    "",    21,21    },
  131.   { "bcs",     8,8,    0x2a,    "1p",        0,    "",    21,21    },
  132.   { "bcc",     8,8,    0x3a,    "1p",        0,    "",    21,21    },
  133.   { "bhi",     8,8,    0x4a,    "1p",        0,    "",    21,21    },
  134.   { "bls",     8,8,    0x5a,    "1p",        0,    "",    21,21    },
  135.   { "bgt",     8,8,    0x6a,    "1p",        0,    "",    21,21    },
  136.   { "ble",     8,8,    0x7a,    "1p",        0,    "",    21,21    },
  137.   { "bfs",     8,8,    0x8a,    "1p",        0,    "",    21,21    },
  138.   { "bfc",     8,8,    0x9a,    "1p",        0,    "",    21,21    },
  139.   { "blo",     8,8,    0xaa,    "1p",        0,    "",    21,21    },
  140.   { "bhs",     8,8,    0xba,    "1p",        0,    "",    21,21    },
  141.   { "blt",     8,8,    0xca,    "1p",        0,    "",    21,21    },
  142.   { "bge",     8,8,    0xda,    "1p",        0,    "",    21,21    },
  143.   { "but",     8,8,    0xea,    "1p",        0,    "",    21,21    },
  144.   { "buf",     8,8,    0xfa,    "1p",        0,    "",    21,21    },
  145.   { "bicb",     6,16,    0x08,    "1B2B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  146.   { "bicw",     6,16,    0x09,    "1W2W",        2,    "",    DEF_MODEC,DEF_MODEL    },
  147.   { "bicd",     6,16,    0x0b,    "1D2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  148.   { "bicpsrb",    11,16,    0x17c,    "1B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  149.   { "bicpsrw",    11,16,    0x17d,    "1W",        2,    "",    DEF_MODEC,DEF_MODEL    },
  150.   { "bispsrb",    11,16,    0x37c,    "1B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  151.   { "bispsrw",    11,16,    0x37d,    "1W",        2,    "",    DEF_MODEC,DEF_MODEL    },
  152.   { "bpt",     8,8,    0xf2,    "",        0,    "",    DEF_MODEC,DEF_MODEL    },
  153.   { "br",     8,8,    0xea,    "1p",        0,    "",    21,21    },
  154. #ifdef SEQUENT_COMPATABILITY
  155.   { "bsr",     8,8,    0x02,    "1H",        0,    "",    21,21    },
  156. #else
  157.   { "bsr",     8,8,    0x02,    "1p",        0,    "",    21,21    },
  158. #endif
  159.   { "caseb",    11,16,    0x77c,    "1B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  160.   { "casew",    11,16,    0x77d,    "1W",        2,    "",    DEF_MODEC,DEF_MODEL    },
  161.   { "cased",    11,16,    0x77f,    "1D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  162.   { "cbitb",    14,24,    0x084e,    "1B2D",        1,    "",    DEF_MODEC,DEF_MODEL    },
  163.   { "cbitw",    14,24,    0x094e,    "1W2D",        2,    "",    DEF_MODEC,DEF_MODEL    },
  164.   { "cbitd",    14,24,    0x0b4e,    "1D2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  165.   { "cbitib",    14,24,    0x0c4e,    "1B2D",        1,    "",    DEF_MODEC,DEF_MODEL    },
  166.   { "cbitiw",    14,24,    0x0d4e,    "1W2D",        2,    "",    DEF_MODEC,DEF_MODEL    },
  167.   { "cbitid",    14,24,    0x0f4e,    "1D2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  168.   { "checkb",    11,24,    0x0ee,    "2A3B1r",    1,    "",    DEF_MODEC,DEF_MODEL    },
  169.   { "checkw",    11,24,    0x1ee,    "2A3W1r",    2,    "",    DEF_MODEC,DEF_MODEL    },
  170.   { "checkd",    11,24,    0x3ee,    "2A3D1r",    4,    "",    DEF_MODEC,DEF_MODEL    },
  171.   { "cinv",    14,24,    0x271e,    "2D1C",        4,    "",    DEF_MODEC,DEF_MODEL    },
  172.   { "cmpf",    14,24,    0x09be,    "1F2F",        4,    "",    DEF_MODEC,DEF_MODEL    },
  173.   { "cmpl",    14,24,    0x08be,    "1L2L",        8,    "",    DEF_MODEC,DEF_MODEL    },
  174.   { "cmpb",     6,16,    0x04,    "1B2B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  175.   { "cmpw",     6,16,    0x05,    "1W2W",        2,    "",    DEF_MODEC,DEF_MODEL    },
  176.   { "cmpd",     6,16,    0x07,    "1D2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  177.   { "cmpmb",    14,24,    0x04ce,    "1A2A3b",    1,    "",    DEF_MODEC,DEF_MODEL    },
  178.   { "cmpmw",    14,24,    0x05ce,    "1A2A3b",    2,    "",    DEF_MODEC,DEF_MODEL    },
  179.   { "cmpmd",    14,24,    0x07ce,    "1A2A3b",    4,    "",    DEF_MODEC,DEF_MODEL    },
  180.   { "cmpqb",     7,16,    0x1c,    "2B1q",        1,    "",    DEF_MODEC,DEF_MODEL    },
  181.   { "cmpqw",     7,16,    0x1d,    "2W1q",        2,    "",    DEF_MODEC,DEF_MODEL    },
  182.   { "cmpqd",     7,16,    0x1f,    "2D1q",        4,    "",    DEF_MODEC,DEF_MODEL    },
  183.   { "cmpsb",    16,24,    0x040e,    "1S",        0,    "[]",    DEF_MODEC,DEF_MODEL    },
  184.   { "cmpsw",    16,24,    0x050e,    "1S",        0,    "[]",    DEF_MODEC,DEF_MODEL    },
  185.   { "cmpsd",    16,24,    0x070e,    "1S",        0,    "[]",    DEF_MODEC,DEF_MODEL    },
  186.   { "cmpst",    16,24,    0x840e,    "1S",        0,    "[]",    DEF_MODEC,DEF_MODEL    },
  187.   { "comb",    14,24,    0x344e,    "1B2B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  188.   { "comw",    14,24,    0x354e,    "1W2W",        2,    "",    DEF_MODEC,DEF_MODEL    },
  189.   { "comd",    14,24,    0x374e,    "1D2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  190.   { "cvtp",    11,24,    0x036e,    "2A3D1r",    4,    "",    DEF_MODEC,DEF_MODEL    },
  191.   { "cxp",     8,8,    0x22,    "1p",        0,    "",    21,21    },
  192.   { "cxpd",    11,16,    0x07f,    "1A",        4,    "",    DEF_MODEC,DEF_MODEL    },
  193.   { "deib",    14,24,    0x2cce,    "1B2W",        1,    "",    DEF_MODEC,DEF_MODEL    },
  194.   { "deiw",    14,24,    0x2dce,    "1W2D",        2,    "",    DEF_MODEC,DEF_MODEL    },
  195.   { "deid",    14,24,    0x2fce,    "1D2Q",        4,    "",    DEF_MODEC,DEF_MODEL    },
  196.   { "dia",     8,8,    0xc2,    "",        1,    "",    DEF_MODEC,DEF_MODEL    },
  197.   { "divf",    14,24,    0x21be,    "1F2F",        4,    "",    DEF_MODEC,DEF_MODEL    },
  198.   { "divl",    14,24,    0x20be,    "1L2L",        8,    "",    DEF_MODEC,DEF_MODEL    },
  199.   { "divb",    14,24,    0x3cce,    "1B2B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  200.   { "divw",    14,24,    0x3dce,    "1W2W",        2,    "",    DEF_MODEC,DEF_MODEL    },
  201.   { "divd",    14,24,    0x3fce,    "1D2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  202.   { "enter",     8,8,    0x82,    "1U2d",        0,    "",    DEF_MODEC,DEF_MODEL    },
  203.   { "exit",     8,8,    0x92,    "1u",        0,    "",    DEF_MODEC,DEF_MODEL    },
  204.   { "extb",    11,24,    0x02e,    "2D3B1r4d",    1,    "",    DEF_MODEC,DEF_MODEL    },
  205.   { "extw",    11,24,    0x12e,    "2D3W1r4d",    2,    "",    DEF_MODEC,DEF_MODEL    },
  206.   { "extd",    11,24,    0x32e,    "2D3D1r4d",    4,    "",    DEF_MODEC,DEF_MODEL    },
  207.   { "extsb",    14,24,    0x0cce,    "1D2B3g4G",    1,    "",    DEF_MODEC,DEF_MODEL    },
  208.   { "extsw",    14,24,    0x0dce,    "1D2W3g4G",    2,    "",    DEF_MODEC,DEF_MODEL    },
  209.   { "extsd",    14,24,    0x0fce,    "1D2D3g4G",    4,    "",    DEF_MODEC,DEF_MODEL    },
  210.   { "ffsb",    14,24,    0x046e,    "1B2B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  211.   { "ffsw",    14,24,    0x056e,    "1W2B",        2,    "",    DEF_MODEC,DEF_MODEL    },
  212.   { "ffsd",    14,24,    0x076e,    "1D2B",        4,    "",    DEF_MODEC,DEF_MODEL    },
  213.   { "flag",     8,8,    0xd2,    "",        0,    "",    DEF_MODEC,DEF_MODEL    },
  214.   { "floorfb",    14,24,    0x3c3e,    "1F2B",        4,    "",    DEF_MODEC,DEF_MODEL    },
  215.   { "floorfw",    14,24,    0x3d3e,    "1F2W",        4,    "",    DEF_MODEC,DEF_MODEL    },
  216.   { "floorfd",    14,24,    0x3f3e,    "1F2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  217.   { "floorlb",    14,24,    0x383e,    "1L2B",        8,    "",    DEF_MODEC,DEF_MODEL    },
  218.   { "floorlw",    14,24,    0x393e,    "1L2W",        8,    "",    DEF_MODEC,DEF_MODEL    },
  219.   { "floorld",    14,24,    0x3b3e,    "1L2D",        8,    "",    DEF_MODEC,DEF_MODEL    },
  220.   { "ibitb",    14,24,    0x384e,    "1B2D",        1,    "",    DEF_MODEC,DEF_MODEL    },
  221.   { "ibitw",    14,24,    0x394e,    "1W2D",        2,    "",    DEF_MODEC,DEF_MODEL    },
  222.   { "ibitd",    14,24,    0x3b4e,    "1D2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  223.   { "indexb",    11,24,    0x42e,    "2B3B1r",    1,    "",    DEF_MODEC,DEF_MODEL    },
  224.   { "indexw",    11,24,    0x52e,    "2W3W1r",    2,    "",    DEF_MODEC,DEF_MODEL    },
  225.   { "indexd",    11,24,    0x72e,    "2D3D1r",    4,    "",    DEF_MODEC,DEF_MODEL    },
  226.   { "insb",    11,24,    0x0ae,    "2B3B1r4d",    1,    "",    DEF_MODEC,DEF_MODEL    },
  227.   { "insw",    11,24,    0x1ae,    "2W3W1r4d",    2,    "",    DEF_MODEC,DEF_MODEL    },
  228.   { "insd",    11,24,    0x3ae,    "2D3D1r4d",    4,    "",    DEF_MODEC,DEF_MODEL    },
  229.   { "inssb",    14,24,    0x08ce,    "1B2D3g4G",    1,    "",    DEF_MODEC,DEF_MODEL    },
  230.   { "inssw",    14,24,    0x09ce,    "1W2D3g4G",    2,    "",    DEF_MODEC,DEF_MODEL    },
  231.   { "inssd",    14,24,    0x0bce,    "1D2D3g4G",    4,    "",    DEF_MODEC,DEF_MODEL    },
  232.   { "jsr",    11,16,    0x67f,    "1A",        4,    "",    21,21    },
  233.   { "jump",    11,16,    0x27f,    "1A",        4,    "",    21,21    },
  234.   { "lfsr",    19,24,    0x00f3e,"1D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  235.   { "lmr",    15,24,    0x0b1e,    "2D1M",        4,    "",    DEF_MODEC,DEF_MODEL    },
  236.   { "lprb",     7,16,    0x6c,    "2B1P",        1,    "",    DEF_MODEC,DEF_MODEL    },
  237.   { "lprw",     7,16,    0x6d,    "2W1P",        2,    "",    DEF_MODEC,DEF_MODEL    },
  238.   { "lprd",     7,16,    0x6f,    "2D1P",        4,    "",    DEF_MODEC,DEF_MODEL    },
  239.   { "lshb",    14,24,    0x144e,    "1B2B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  240.   { "lshw",    14,24,    0x154e,    "1B2W",        1,    "",    DEF_MODEC,DEF_MODEL    },
  241.   { "lshd",    14,24,    0x174e,    "1B2D",        1,    "",    DEF_MODEC,DEF_MODEL    },
  242.   { "meib",    14,24,    0x24ce,    "1B2W",        1,    "",    DEF_MODEC,DEF_MODEL    },
  243.   { "meiw",    14,24,    0x25ce,    "1W2D",        2,    "",    DEF_MODEC,DEF_MODEL    },
  244.   { "meid",    14,24,    0x27ce,    "1D2Q",        4,    "",    DEF_MODEC,DEF_MODEL    },
  245.   { "modb",    14,24,    0x38ce,    "1B2B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  246.   { "modw",    14,24,    0x39ce,    "1W2W",        2,    "",    DEF_MODEC,DEF_MODEL    },
  247.   { "modd",    14,24,    0x3bce,    "1D2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  248.   { "movf",    14,24,    0x05be,    "1F2F",        4,    "",    DEF_MODEC,DEF_MODEL    },
  249.   { "movl",    14,24,    0x04be,    "1L2L",        8,    "",    DEF_MODEC,DEF_MODEL    },
  250.   { "movb",     6,16,    0x14,    "1B2B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  251.   { "movw",     6,16,    0x15,    "1W2W",        2,    "",    DEF_MODEC,DEF_MODEL    },
  252.   { "movd",     6,16,    0x17,    "1D2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  253.   { "movbf",    14,24,    0x043e,    "1B2F",        1,    "",    DEF_MODEC,DEF_MODEL    },
  254.   { "movwf",    14,24,    0x053e,    "1W2F",        2,    "",    DEF_MODEC,DEF_MODEL    },
  255.   { "movdf",    14,24,    0x073e,    "1D2F",        4,    "",    DEF_MODEC,DEF_MODEL    },
  256.   { "movbl",    14,24,    0x003e,    "1B2L",        1,    "",    DEF_MODEC,DEF_MODEL    },
  257.   { "movwl",    14,24,    0x013e,    "1W2L",        2,    "",    DEF_MODEC,DEF_MODEL    },
  258.   { "movdl",    14,24,    0x033e,    "1D2L",        4,    "",    DEF_MODEC,DEF_MODEL    },
  259.   { "movfl",    14,24,    0x1b3e,    "1F2L",        4,    "",    DEF_MODEC,DEF_MODEL    },
  260.   { "movlf",    14,24,    0x163e,    "1L2F",        8,    "",    DEF_MODEC,DEF_MODEL    },
  261.   { "movmb",    14,24,    0x00ce,    "1A2A3b",    1,    "",    DEF_MODEC,DEF_MODEL    },
  262.   { "movmw",    14,24,    0x01ce,    "1A2A3b",    2,    "",    DEF_MODEC,DEF_MODEL    },
  263.   { "movmd",    14,24,    0x03ce,    "1A2A3b",    4,    "",    DEF_MODEC,DEF_MODEL    },
  264.   { "movqb",     7,16,    0x5c,    "2B1q",        1,    "",    DEF_MODEC,DEF_MODEL    },
  265.   { "movqw",     7,16,    0x5d,    "2B1q",        2,    "",    DEF_MODEC,DEF_MODEL    },
  266.   { "movqd",     7,16,    0x5f,    "2B1q",        4,    "",    DEF_MODEC,DEF_MODEL    },
  267.   { "movsb",    16,24,    0x000e,    "1S",        0,    "[]",    DEF_MODEC,DEF_MODEL    },
  268.   { "movsw",    16,24,    0x010e,    "1S",        0,    "[]",    DEF_MODEC,DEF_MODEL    },
  269.   { "movsd",    16,24,    0x030e,    "1S",        0,    "[]",    DEF_MODEC,DEF_MODEL    },
  270.   { "movst",    16,24,    0x800e,    "1S",        0,    "[]",    DEF_MODEC,DEF_MODEL    },
  271.   { "movsub",    14,24,    0x0cae,    "1A2A",        1,    "",    DEF_MODEC,DEF_MODEL    },
  272.   { "movsuw",    14,24,    0x0dae,    "1A2A",        2,    "",    DEF_MODEC,DEF_MODEL    },
  273.   { "movsud",    14,24,    0x0fae,    "1A2A",        4,    "",    DEF_MODEC,DEF_MODEL    },
  274.   { "movusb",    14,24,    0x1cae,    "1A2A",        1,    "",    DEF_MODEC,DEF_MODEL    },
  275.   { "movusw",    14,24,    0x1dae,    "1A2A",        2,    "",    DEF_MODEC,DEF_MODEL    },
  276.   { "movusd",    14,24,    0x1fae,    "1A2A",        4,    "",    DEF_MODEC,DEF_MODEL    },
  277.   { "movxbd",    14,24,    0x1cce,    "1B2D",        1,    "",    DEF_MODEC,DEF_MODEL    },
  278.   { "movxwd",    14,24,    0x1dce,    "1W2D",        2,    "",    DEF_MODEC,DEF_MODEL    },
  279.   { "movxbw",    14,24,    0x10ce,    "1B2W",        1,    "",    DEF_MODEC,DEF_MODEL    },
  280.   { "movzbd",    14,24,    0x18ce,    "1B2D",        1,    "",    DEF_MODEC,DEF_MODEL    },
  281.   { "movzwd",    14,24,    0x19ce,    "1W2D",        2,    "",    DEF_MODEC,DEF_MODEL    },
  282.   { "movzbw",    14,24,    0x14ce,    "1B2W",        1,    "",    DEF_MODEC,DEF_MODEL    },
  283.   { "mulf",    14,24,    0x31be,    "1F2F",        4,    "",    DEF_MODEC,DEF_MODEL    },
  284.   { "mull",    14,24,    0x30be,    "1L2L",        8,    "",    DEF_MODEC,DEF_MODEL    },
  285.   { "mulb",    14,24,    0x20ce, "1B2B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  286.   { "mulw",    14,24,    0x21ce, "1W2W",        2,    "",    DEF_MODEC,DEF_MODEL    },
  287.   { "muld",    14,24,    0x23ce, "1D2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  288.   { "negf",    14,24,    0x15be, "1F2F",        4,    "",    DEF_MODEC,DEF_MODEL    },
  289.   { "negl",    14,24,    0x14be, "1L2L",        8,    "",    DEF_MODEC,DEF_MODEL    },
  290.   { "negb",    14,24,    0x204e, "1B2B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  291.   { "negw",    14,24,    0x214e, "1W2W",        2,    "",    DEF_MODEC,DEF_MODEL    },
  292.   { "negd",    14,24,    0x234e, "1D2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  293.   { "nop",     8,8,    0xa2,    "",        0,    "",    DEF_MODEC,DEF_MODEL    },
  294.   { "notb",    14,24,    0x244e, "1B2B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  295.   { "notw",    14,24,    0x254e, "1W2W",        2,    "",    DEF_MODEC,DEF_MODEL    },
  296.   { "notd",    14,24,    0x274e, "1D2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  297.   { "orb",     6,16,    0x18,    "1B2B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  298.   { "orw",     6,16,    0x19,    "1W2W",        2,    "",    DEF_MODEC,DEF_MODEL    },
  299.   { "ord",     6,16,    0x1b,    "1D2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  300.   { "quob",    14,24,    0x30ce,    "1B2B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  301.   { "quow",    14,24,    0x31ce,    "1W2W",        2,    "",    DEF_MODEC,DEF_MODEL    },
  302.   { "quod",    14,24,    0x33ce,    "1D2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  303.   { "rdval",    19,24,    0x0031e,"1A",        4,    "",    DEF_MODEC,DEF_MODEL    },
  304.   { "remb",    14,24,    0x34ce,    "1B2B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  305.   { "remw",    14,24,    0x35ce,    "1W2W",        2,    "",    DEF_MODEC,DEF_MODEL    },
  306.   { "remd",    14,24,    0x37ce,    "1D2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  307.   { "restore",     8,8,    0x72,    "1u",        0,    "",    DEF_MODEC,DEF_MODEL    },
  308.   { "ret",     8,8,    0x12,    "1d",        0,    "",    DEF_MODEC,DEF_MODEL    },
  309.   { "reti",     8,8,    0x52,    "",        0,    "",    DEF_MODEC,DEF_MODEL    },
  310.   { "rett",     8,8,    0x42,    "1d",        0,    "",    DEF_MODEC,DEF_MODEL    },
  311.   { "rotb",    14,24,    0x004e,    "1B2B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  312.   { "rotw",    14,24,    0x014e,    "1B2W",        1,    "",    DEF_MODEC,DEF_MODEL    },
  313.   { "rotd",    14,24,    0x034e,    "1B2D",        1,    "",    DEF_MODEC,DEF_MODEL    },
  314.   { "roundfb",    14,24,    0x243e,    "1F2B",        4,    "",    DEF_MODEC,DEF_MODEL    },
  315.   { "roundfw",    14,24,    0x253e,    "1F2W",        4,    "",    DEF_MODEC,DEF_MODEL    },
  316.   { "roundfd",    14,24,    0x273e,    "1F2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  317.   { "roundlb",    14,24,    0x203e,    "1L2B",        8,    "",    DEF_MODEC,DEF_MODEL    },
  318.   { "roundlw",    14,24,    0x213e,    "1L2W",        8,    "",    DEF_MODEC,DEF_MODEL    },
  319.   { "roundld",    14,24,    0x233e,    "1L2D",        8,    "",    DEF_MODEC,DEF_MODEL    },
  320.   { "rxp",     8,8,    0x32,    "1d",        0,    "",    DEF_MODEC,DEF_MODEL    },
  321.   { "seqb",    11,16,    0x3c,    "1B",        0,    "",    DEF_MODEC,DEF_MODEL    },
  322.   { "seqw",    11,16,    0x3d,    "1W",        0,    "",    DEF_MODEC,DEF_MODEL    },
  323.   { "seqd",    11,16,    0x3f,    "1D",        0,    "",    DEF_MODEC,DEF_MODEL    },
  324.   { "sneb",    11,16,    0xbc,    "1B",        0,    "",    DEF_MODEC,DEF_MODEL    },
  325.   { "snew",    11,16,    0xbd,    "1W",        0,    "",    DEF_MODEC,DEF_MODEL    },
  326.   { "sned",    11,16,    0xbf,    "1D",        0,    "",    DEF_MODEC,DEF_MODEL    },
  327.   { "scsb",    11,16,    0x13c,    "1B",        0,    "",    DEF_MODEC,DEF_MODEL    },
  328.   { "scsw",    11,16,    0x13d,    "1W",        0,    "",    DEF_MODEC,DEF_MODEL    },
  329.   { "scsd",    11,16,    0x13f,    "1D",        0,    "",    DEF_MODEC,DEF_MODEL    },
  330.   { "sccb",    11,16,    0x1bc,    "1B",        0,    "",    DEF_MODEC,DEF_MODEL    },
  331.   { "sccw",    11,16,    0x1bd,    "1W",        0,    "",    DEF_MODEC,DEF_MODEL    },
  332.   { "sccd",    11,16,    0x1bf,    "1D",        0,    "",    DEF_MODEC,DEF_MODEL    },
  333.   { "shib",    11,16,    0x23c,    "1B",        0,    "",    DEF_MODEC,DEF_MODEL    },
  334.   { "shiw",    11,16,    0x23d,    "1W",        0,    "",    DEF_MODEC,DEF_MODEL    },
  335.   { "shid",    11,16,    0x23f,    "1D",        0,    "",    DEF_MODEC,DEF_MODEL    },
  336.   { "slsb",    11,16,    0x2bc,    "1B",        0,    "",    DEF_MODEC,DEF_MODEL    },
  337.   { "slsw",    11,16,    0x2bd,    "1W",        0,    "",    DEF_MODEC,DEF_MODEL    },
  338.   { "slsd",    11,16,    0x2bf,    "1D",        0,    "",    DEF_MODEC,DEF_MODEL    },
  339.   { "sgtb",    11,16,    0x33c,    "1B",        0,    "",    DEF_MODEC,DEF_MODEL    },
  340.   { "sgtw",    11,16,    0x33d,    "1W",        0,    "",    DEF_MODEC,DEF_MODEL    },
  341.   { "sgtd",    11,16,    0x33f,    "1D",        0,    "",    DEF_MODEC,DEF_MODEL    },
  342.   { "sleb",    11,16,    0x3bc,    "1B",        0,    "",    DEF_MODEC,DEF_MODEL    },
  343.   { "slew",    11,16,    0x3bd,    "1W",        0,    "",    DEF_MODEC,DEF_MODEL    },
  344.   { "sled",    11,16,    0x3bf,    "1D",        0,    "",    DEF_MODEC,DEF_MODEL    },
  345.   { "sfsb",    11,16,    0x43c,    "1B",        0,    "",    DEF_MODEC,DEF_MODEL    },
  346.   { "sfsw",    11,16,    0x43d,    "1W",        0,    "",    DEF_MODEC,DEF_MODEL    },
  347.   { "sfsd",    11,16,    0x43f,    "1D",        0,    "",    DEF_MODEC,DEF_MODEL    },
  348.   { "sfcb",    11,16,    0x4bc,    "1B",        0,    "",    DEF_MODEC,DEF_MODEL    },
  349.   { "sfcw",    11,16,    0x4bd,    "1W",        0,    "",    DEF_MODEC,DEF_MODEL    },
  350.   { "sfcd",    11,16,    0x4bf,    "1D",        0,    "",    DEF_MODEC,DEF_MODEL    },
  351.   { "slob",    11,16,    0x53c,    "1B",        0,    "",    DEF_MODEC,DEF_MODEL    },
  352.   { "slow",    11,16,    0x53d,    "1W",        0,    "",    DEF_MODEC,DEF_MODEL    },
  353.   { "slod",    11,16,    0x53f,    "1D",        0,    "",    DEF_MODEC,DEF_MODEL    },
  354.   { "shsb",    11,16,    0x5bc,    "1B",        0,    "",    DEF_MODEC,DEF_MODEL    },
  355.   { "shsw",    11,16,    0x5bd,    "1W",        0,    "",    DEF_MODEC,DEF_MODEL    },
  356.   { "shsd",    11,16,    0x5bf,    "1D",        0,    "",    DEF_MODEC,DEF_MODEL    },
  357.   { "sltb",    11,16,    0x63c,    "1B",        0,    "",    DEF_MODEC,DEF_MODEL    },
  358.   { "sltw",    11,16,    0x63d,    "1W",        0,    "",    DEF_MODEC,DEF_MODEL    },
  359.   { "sltd",    11,16,    0x63f,    "1D",        0,    "",    DEF_MODEC,DEF_MODEL    },
  360.   { "sgeb",    11,16,    0x6bc,    "1B",        0,    "",    DEF_MODEC,DEF_MODEL    },
  361.   { "sgew",    11,16,    0x6bd,    "1W",        0,    "",    DEF_MODEC,DEF_MODEL    },
  362.   { "sged",    11,16,    0x6bf,    "1D",        0,    "",    DEF_MODEC,DEF_MODEL    },
  363.   { "sutb",    11,16,    0x73c,    "1B",        0,    "",    DEF_MODEC,DEF_MODEL    },
  364.   { "sutw",    11,16,    0x73d,    "1W",        0,    "",    DEF_MODEC,DEF_MODEL    },
  365.   { "sutd",    11,16,    0x73f,    "1D",        0,    "",    DEF_MODEC,DEF_MODEL    },
  366.   { "sufb",    11,16,    0x7bc,    "1B",        0,    "",    DEF_MODEC,DEF_MODEL    },
  367.   { "sufw",    11,16,    0x7bd,    "1W",        0,    "",    DEF_MODEC,DEF_MODEL    },
  368.   { "sufd",    11,16,    0x7bf,    "1D",        0,    "",    DEF_MODEC,DEF_MODEL    },
  369.   { "save",     8,8,    0x62,    "1U",        0,    "",    DEF_MODEC,DEF_MODEL    },
  370.   { "sbitb",    14,24,    0x184e,    "1B2A",        1,    "",    DEF_MODEC,DEF_MODEL    },
  371.   { "sbitw",    14,24,    0x194e,    "1W2A",        2,    "",    DEF_MODEC,DEF_MODEL    },
  372.   { "sbitd",    14,24,    0x1b4e,    "1D2A",        4,    "",    DEF_MODEC,DEF_MODEL    },
  373.   { "sbitib",    14,24,    0x1c4e,    "1B2A",        1,    "",    DEF_MODEC,DEF_MODEL    },
  374.   { "sbitiw",    14,24,    0x1d4e,    "1W2A",        2,    "",    DEF_MODEC,DEF_MODEL    },
  375.   { "sbitid",    14,24,    0x1f4e,    "1D2A",        4,    "",    DEF_MODEC,DEF_MODEL    },
  376.   { "setcfg",    15,24,    0x0b0e,    "1O",        0,    "",    DEF_MODEC,DEF_MODEL    },
  377.   { "sfsr",    14,24,    0x373e,    "1f",        0,    "",    DEF_MODEC,DEF_MODEL    },
  378.   { "skpsb",    16,24,    0x0c0e,    "1S",        0,    "[]",    DEF_MODEC,DEF_MODEL    },
  379.   { "skpsw",    16,24,    0x0d0e,    "1S",        0,    "[]",    DEF_MODEC,DEF_MODEL    },
  380.   { "skpsd",    16,24,    0x0f0e, "1S",        0,    "[]",    DEF_MODEC,DEF_MODEL    },
  381.   { "skpst",    16,24,    0x8c0e,    "1S",        0,    "[]",    DEF_MODEC,DEF_MODEL    },
  382.   { "smr",    15,24,    0x0f1e,    "2D1M",        4,    "",    DEF_MODEC,DEF_MODEL    },
  383.   { "sprb",     7,16,    0x2c,    "2B1P",        1,    "",    DEF_MODEC,DEF_MODEL    },
  384.   { "sprw",     7,16,    0x2d,    "2W1P",        2,    "",    DEF_MODEC,DEF_MODEL    },
  385.   { "sprd",     7,16,    0x2f,    "2D1P",        4,    "",    DEF_MODEC,DEF_MODEL    },
  386.   { "subf",    14,24,    0x11be,    "1F2F",        4,    "",    DEF_MODEC,DEF_MODEL    },
  387.   { "subl",    14,24,    0x10be,    "1L2L",        8,    "",    DEF_MODEC,DEF_MODEL    },
  388.   { "subb",     6,16,    0x20,    "1B2B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  389.   { "subw",     6,16,    0x21,    "1W2W",        2,    "",    DEF_MODEC,DEF_MODEL    },
  390.   { "subd",     6,16,    0x23,    "1D2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  391.   { "subcb",     6,16,    0x30,    "1B2B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  392.   { "subcw",     6,16,    0x31,    "1W2W",        2,    "",    DEF_MODEC,DEF_MODEL    },
  393.   { "subcd",     6,16,    0x33,    "1D2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  394.   { "subpb",    14,24,    0x2c4e,    "1B2B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  395.   { "subpw",    14,24,    0x2d4e,    "1W2W",        2,    "",    DEF_MODEC,DEF_MODEL    },
  396.   { "subpd",    14,24,    0x2f4e,    "1D2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  397. #ifdef NS32K_SVC_IMMED_OPERANDS
  398.   { "svc",     8,8,    0xe2,    "2i1i",        1,    "",    DEF_MODEC,DEF_MODEL    }, /* not really, but unix uses it */
  399. #else
  400.   { "svc",     8,8,    0xe2,    "",        0,    "",    DEF_MODEC,DEF_MODEL    },
  401. #endif
  402.   { "tbitb",     6,16,    0x34,    "1B2A",        1,    "",    DEF_MODEC,DEF_MODEL    },
  403.   { "tbitw",     6,16,    0x35,    "1W2A",        2,    "",    DEF_MODEC,DEF_MODEL    },
  404.   { "tbitd",     6,16,    0x37,    "1D2A",        4,    "",    DEF_MODEC,DEF_MODEL    },
  405.   { "truncfb",    14,24,    0x2c3e,    "1F2B",        4,    "",    DEF_MODEC,DEF_MODEL    },
  406.   { "truncfw",    14,24,    0x2d3e,    "1F2W",        4,    "",    DEF_MODEC,DEF_MODEL    },
  407.   { "truncfd",    14,24,    0x2f3e,    "1F2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  408.   { "trunclb",    14,24,    0x283e,    "1L2B",        8,    "",    DEF_MODEC,DEF_MODEL    },
  409.   { "trunclw",    14,24,    0x293e,    "1L2W",        8,    "",    DEF_MODEC,DEF_MODEL    },
  410.   { "truncld",    14,24,    0x2b3e,    "1L2D",        8,    "",    DEF_MODEC,DEF_MODEL    },
  411.   { "wait",     8,8,    0xb2,    "",        0,    "",    DEF_MODEC,DEF_MODEL    },
  412.   { "wrval",    19,24,    0x0071e,"1A",        0,    "",    DEF_MODEC,DEF_MODEL    },
  413.   { "xorb",     6,16,    0x38,    "1B2B",        1,    "",    DEF_MODEC,DEF_MODEL    },
  414.   { "xorw",     6,16,    0x39,    "1W2W",        2,    "",    DEF_MODEC,DEF_MODEL    },
  415.   { "xord",     6,16,    0x3b,    "1D2D",        4,    "",    DEF_MODEC,DEF_MODEL    },
  416. #if defined(NS32381)    /* I'm not too sure of these */
  417.   { "dotf",    14,24,  0x0dfe, "1F2F",        4,    "",    DEF_MODEC,DEF_MODEL    },
  418.   { "dotl",    14,24,  0x0cfe, "1L2L",        8,    "",    DEF_MODEC,DEF_MODEL    },
  419.   { "logbf",    14,24,  0x15fe, "1F2F",        4,    "",    DEF_MODEC,DEF_MODEL    },
  420.   { "logbl",    14,24,  0x14fe, "1L2L",        8,    "",    DEF_MODEC,DEF_MODEL    },
  421.   { "polyf",    14,24,  0x09fe, "1F2F",        4,    "",    DEF_MODEC,DEF_MODEL    },
  422.   { "polyl",    14,24,  0x08fe, "1L2L",        8,    "",    DEF_MODEC,DEF_MODEL    },
  423.   { "scalbf",    14,24,  0x11fe, "1F2F",        4,    "",    DEF_MODEC,DEF_MODEL    },
  424.   { "scalbl",    14,24,  0x10fe, "1L2L",        8,    "",    DEF_MODEC,DEF_MODEL    },
  425. #endif
  426. };
  427.  
  428. int numopcodes=sizeof(ns32k_opcodes)/sizeof(ns32k_opcodes[0]);
  429.  
  430. struct ns32k_opcode *endop = ns32k_opcodes+sizeof(ns32k_opcodes)/sizeof(ns32k_opcodes[0]);
  431.  
  432. #define MAX_ARGS 4
  433. #define ARG_LEN 50
  434.  
  435.